Cloud computing is the use of computing resources (hardware and software) which are available in a remote location and accessible over a network, such as the Internet. Users are able to buy these computing resources (including storage and computing power) as a utility on demand. Cloud computing entrusts remote services with a user's data, software and computation. Use of virtual computing resources can provide a number of advantages including cost advantages and/or ability to adapt rapidly to changing computing resource needs.
Web services are often associated with cloud computing. A web service is a software function provided at a network address over the web or the cloud. Clients initiate requests to servers; servers process requests and return appropriate responses. The client requests are typically initiated using an API request. An API is a programmatic interface to a defined request-response message system, typically expressed in JSON or XML, which is exposed via the web—most commonly by means of an HTTP-based web server. The API can specify a set of functions or routines that accomplish a specific task or allow interaction with a software component.
Communications between client and servers is accomplished using well-established protocols, such as the Transmission Control Protocol (TCP). TCP provides for reliable delivery of packets streams using a system of sequential acknowledgement and retransmission when necessary. TCP is a connection-oriented protocol in which two devices exchange messages to open a virtual connection via the network. Once a connection is opened, bidirectional communications may occur between the connected devices. The connection may exist until closed by one of the devices. Opening and closing a connection both require several steps for which specific messages are exchanged between the two devices. A connection may also be closed when an anticipated response is not received by one device for a predetermined period of time, commonly called a “time-out”. A TCP connection is considered to be “stateful” since each device maintains information describing the state of the connection (being opened, established, being closed), what data has been sent, and what sent data has been acknowledged.
Some web services require a long period of time (e.g., from several minutes to hours) before being able to respond to client requests. During such a time, it is not practical or efficient to maintain a protocol connection. However, if the connection is broken, then the web service will not be able to provide the response to the client requester.
Thus, there is a need for more efficient communication when providing web services.